package jsu.blogger.mapper;

import org.apache.ibatis.annotations.*;

@Mapper
public interface PostLikeMapper {

    /**
     * 插入点赞或踩记录
     *
     * @param userId 用户ID
     * @param postId 帖子ID
     * @param isLike 是否为点赞，1为点赞，0为踩
     */
    @Insert("INSERT INTO post_likes (user_id, post_id, is_like, created_at) " +
            "VALUES (#{userId}, #{postId}, #{isLike}, CURRENT_TIMESTAMP)")
    int insertPostLike(@Param("userId") Long userId,
                        @Param("postId") Long postId,
                        @Param("isLike") boolean isLike);

    /**
     * 根据用户ID和帖子ID删除点赞或踩记录
     *
     * @param userId 用户ID
     * @param postId 帖子ID
     */
    @Delete("DELETE FROM post_likes WHERE user_id = #{userId} AND post_id = #{postId}")
    int deletePostLike(@Param("userId") Long userId,
                        @Param("postId") Long postId);

    /**
     * 查询用户对帖子的操作状态
     *
     * @param userId 用户ID
     * @param postId 帖子ID
     * @return 返回点赞、踩的状态：1（点赞）、0（踩）、null（没有操作）
     */
    @Select("SELECT is_like FROM post_likes WHERE user_id = #{userId} AND post_id = #{postId}")
    Integer getUserPostLikeStatus(@Param("userId") Long userId,
                                  @Param("postId") Long postId);


    /**
     * 更新用户对帖子的点赞或踩状态
     *
     * @param userId 用户ID
     * @param postId 帖子ID
     * @param isLike 点赞或踩状态，1 表示点赞，0 表示踩
     */
    @Update("UPDATE post_likes SET is_like = #{isLike}, created_at = CURRENT_TIMESTAMP " +
            "WHERE user_id = #{userId} AND post_id = #{postId}")
    int updatePostLike(@Param("userId") Long userId,
                        @Param("postId") Long postId,
                        @Param("isLike") boolean isLike);
}
